##### Herança #####

import cartao

class CartaoDeCidadao(cartao.Cartao, list):
    '''
    classe derivada de Cartao e de list
    mecanismo de henraca multipla
    '''
    def __init__(self, numero, nome, nif='9999'):
        cartao.Cartao.__init__(self, numero, nome)
        self.nif = nif

    def __str__(self):
        return cartao.Cartao.__str__(self) + ' '\
               + str(self.nif) + ' de cidadao' + ' lista: ' + ' ' + \
               str([str(x) + ' ' for x in self])

    pass

class CartaoDeCidadaoNovoEstilo(cartao.CartaoNovoEstilo, list):
    '''
    classe derivada de Cartao e de list
    mecanismo de heranca multipla
    '''

    def __init__(self, numero, nome, nif = '9999'):
        # nas classes de novo estilo temos super()
        super(CartaoDeCidadaoNovoEstilo, self).__init__(numero, nome)

        self.nif = nif

    def __str__(self):
        return cartao.CartaoNovoEstilo.__str__(self) + ' ' \
               + str(eslf.nif) + ' de cidadao' + ' lista: ' + \
               str([str(x) + ' ' for x in self])

    pass
##### Herança #####

import cartao

class CartaoDeCidadao(cartao.Cartao, list):
    '''
    classe derivada de Cartao e de list
    mecanismo de henraca multipla
    '''
    def __init__(self, numero, nome, nif='9999'):
        cartao.Cartao.__init__(self, numero, nome)
        self.nif = nif

    def __str__(self):
        return cartao.Cartao.__str__(self) + ' '\
               + str(self.nif) + ' de cidadao' + ' lista: ' + ' ' + \
               str([str(x) + ' ' for x in self])

    pass

class CartaoDeCidadaoNovoEstilo(cartao.CartaoNovoEstilo, list):
    '''
    classe derivada de Cartao e de list
    mecanismo de heranca multipla
    '''

    def __init__(self, numero, nome, nif = '9999'):
        # nas classes de novo estilo temos super()
        super(CartaoDeCidadaoNovoEstilo, self).__init__(numero, nome)

        self.nif = nif

    def __str__(self):
        return cartao.CartaoNovoEstilo.__str__(self) + ' ' \
               + str(eslf.nif) + ' de cidadao' + ' lista: ' + \
               str([str(x) + ' ' for x in self])

    pass

def teste():
    obj1 = CartaoDeCidadao('898989', 'Manuel Antunes', '510417876')

    print obj1

    obj1.append('obs: sinal na bochecha direita')
    obj1.append('obs: olhos azuis')

    print obj1

    # e como novo estilo
    obj2 = CartaoDeCidadaoNovoEstilo('111212', 'Manuel Silva', '510417876')

    obj2.append('obs: sinal na bochecha esquerda')
    obj2.append('obs: olhos verdes')

    print obj2
    pass
